<?php namespace Common\Model;
use Hdphp\Model\Model;
class Arc extends Model{
	protected $table = 'article';
	protected $validate = array(
		array('title','required','标题不能为空',3,3),
		array('author','required','作者不能为空',3,3),
		
	);
	//自动完成属性
	protected $auto=array(
		//1.字段名 
		//2.作用的系统函数或者说自定义方法
		//3.函数还是方法类型
		//4.处理的条件（3是必须处理）
		//5.处理的时机（1是插入时处理）
    		array('sendtime','time','function',3,1),
    		array('updatetime','time','function',3,3),
    		array('user_uid','getUid','method',3,1),
    		array('thumb','getThumb','method',3,3),
    );
	public function getThumb(){
		//如果是添加动作，那么post里面是没有thumb的，自己可以打印测试一下
		//如果post里面有thumb，证明是修改动作，因为在修改页面edit.php放了一个隐藏域
		if($thumb = Q('post.thumb')){
			return $thumb;
		}
		//如果没有文件上传
		if($_FILES['thumb']['error'] == 4){
			$this->error = '缩略图必须上传';
			return;
		}
		//1.上传
		$files = Upload::path('./Upload/' . date('ymd'))->type('jpg,png,gif')->make();
		//如果$files为空数组，也就是上传失败，比如类型不允许，大小不允许...
		if(!$files){
			//把上传的错误压入当前模型的error属性，这样外面的控制器就可以用getError方法调用
			$this->error = Upload::getError();
			return;
		}
		//自己打印$files看下结果
		//2.缩略
		//./Upload/160712/471.jpg 变成 ./Upload/160712/471_thumb.jpg
		$path = $files[0]['path'];
		$type = strrchr($path, '.');//.jpg
		$newPath = str_replace($type, '_thumb' . $type, $path);
		Image::thumb($path,$newPath,500,500,6);
		return $newPath;
	}
	
	public function getUid(){
		//return 出去的值就可以存入uid字段
		return $_SESSION['info']['uid'];
	}
	
	//添加方法
	public function store(){
		//一、先验证****************
		//1、article验证
		//create触发自动验证和自动完成
		if(!$this->create()){
			return false;
		}
		//上传验证，如果有错误就返回false，这个错误是在上传失败的时候赋值的
		if($this->error){
			return false;
		}
		//2、article_data验证(需要重新再次建立模型)
		$arcDataModel = new \Admin\Model\ArcData;
		if(!$arcDataModel->create()){
			//把arcData模型的错误信息压入到当前模型
			//因为外部控制输出错误的时候，就是调用的当前模型的错误
			$this->error = $arcDataModel->getError();
			return false;
		}
		//二、添加****************
		//添加article表，添加文章会返回自增id
		$aid = $this->add();
		//添加article_data表
		$arcDataModel->data['article_aid'] = $aid;
		$arcDataModel->add();
		//添加article_tag表
		$arcTagModel = new \Admin\Model\ArcTag;
		$arcTagModel->store($aid);
		return true;
		
		
	}
	
	//获得文章和分类表的关联数据
	public function getArcCate(){
		//获得数据总数
		//注意where条件 is_recycle=0 因为is_recycle为0就是不在回收站
		$total = $this->join('category','category_cid','=','cid')->where("is_recycle=0")->count();
		//分页处理
		$page = Page::row(2)->make($total);
		//关联获得数据
		$arcCateData = $this->join('category','category_cid','=','cid')->field('aid,title,cname')->limit(Page::limit())->where("is_recycle=0")->get();
		//返回数据
		$data = array(
			'page' => $page,
			'data' => $arcCateData
		);
		return $data;
	
		
	}
	
	
	public function edit($aid){
		//一、验证***************
		//验证article表
		if(!$this->create()) return false;
		//验证上传图片
		if($this->error) return false;
		//验证article_data表
		$arcDataModel = new \Common\Model\ArcData;
		if(!$arcDataModel->create()){
			$this->error = $arcDataModel->getError();
			return false;
		}
		//二、修改*******
		//修改article
		$this->save();
		//修改article_data
		$arcDataModel->where("article_aid={$aid}")->save();
		//修改article_tag(中间表)
		$arcTagModel = new \Common\Model\ArcTag;
		//(1)先删除
		$arcTagModel->where("article_aid={$aid}")->delete();
		//(2)再添加
		$arcTagModel->store($aid);
		
		return true;
		
		
		
		
		
		
		
		
		
	}
	
}



 ?>